<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  在这个例子中，fetchData函数接受一个回调函数作为参数。函数内部使用setTimeout模拟异步操作，在2秒后返回一个包含姓名和年龄的数据对象。
  然后，该回调函数被调用，并传递数据对象作为参数。在上面的例子中，回调函数只是简单地打印数据对象到控制台中。

  这段代码定义了一个函数 fetchData ，它接受一个回调函数作为参数，该函数将在异步操作完成后被调用。在该函数中，我们模拟了一个异步操作，
  即使用 setTimeout 延迟 2 秒钟，然后构造了一个包含 name 和 age 属性的 JavaScript 对象，并将其传递给回调函数 callback。

  最后，我们调用 fetchData 函数并传入一个匿名回调函数，该函数接收一个参数 data，在这里我们简单地将数据输出到控制台上。
  当异步操作完成时，回调函数将被执行并将数据作为参数传递给它。因此，在控制台上将打印出 "Received data: { name: 'John', age: 30 }"。
  <script src="">
    // let arr1 = [1, 2, 3]
    // let arr2 = [4, 5, 6]
    // // arr1.push(...arr2)
    // // console.log(arr1);
    // let newarr = [...arr1, ...arr2]
    // console.log(newarr);

    // 编写一个函数，该函数接受两个数组作为参数，并返回这两个数组的交集（即它们都包含的元素）。
    // 例如，如果输入的数组为 [1, 2, 3, 4] 和 [3, 4, 5, 6]，则你的函数应该返回 [3, 4]。

    let arr1 = [1, 2, 3, 4]
    let arr2 = [3, 4, 5, 6]

    function jiaoji(arr1, arr2) {
      return arr1.filter(item => arr2.includes(item))
    }
    jiaoji(arr1, arr2)
  </script>
  <script src="">
    let arr = [1, 2, 3]
    let newarr = arr.reduce((result, item) => {
      return result + item
    }, 0)
    console.log(newarr);
  </script>
  <script src="">
    let sum = []
    for (let i = 1; i <= 10; i++) {
      sum.push(i)
    }
    console.log(sum.join(','));

  </script>
  <script src="">
    // 写一个函数 chunk(arr, size)，它接受一个数组和一个数字作为参数，
    // 将数组拆分成多个子数组，每个子数组的长度为指定的数字 size，最后返回一个包含所有子数组的新数组。

    function chunk(arr, size) {
      let newArr = []
      for (let i = 0; i < arr.length; i = i + size) {
        newArr.push(arr.slice(i, i + size))
      }
      return newArr
    }


    let arr = [1, 2, 3, 4, 5];
    let chunkedArr = chunk(arr, 2);
    console.log(chunkedArr); // [[1, 2], [3, 4], [5]]

    chunkedArr = chunk(arr, 3);
    console.log(chunkedArr); // [[1, 2, 3], [4, 5]]

  </script>
  <script>
    // 在这个例子中，fetchData函数接受一个回调函数作为参数。函数内部使用setTimeout模拟异步操作，在2秒后返回一个包含姓名和年龄的数据对象。
    // 然后，该回调函数被调用，并传递数据对象作为参数。在上面的例子中，回调函数只是简单地打印数据对象到控制台中。

    function fetchData(callback) {
      setTimeout(() => {
        const data = { name: "John", age: 30 };
        callback(data);
      }, 2000);
    }
    // fetchData((data) => {
    //   console.log("Received data:", data);
    // });

  </script>
</body>

</html>